/*!
 * Copyright (c) 2023-present StarDreamNet
 */
(document.loader || (document.loader = [])).push(["login", function (require, exports, module) {

    function diffEmail(email) { // 检查邮箱格式
        return /\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}/.test(email);
    };

    // ———————————————— 登录 ————————————————
    $('#loginButton').on("click", function () { // 点击登录按钮
        // 获取输入框中的邮箱和密码
        var email = $('#email').val();
        var password = $('#password').val();

        // 设置请求的url
        var url = '/api/login';

        // 禁用按钮，防止多次点击
        this.disabled = true;
        $("#email,#password").prop("disabled", true);

        // 发起post请求
        $.ajax(url, {
            method: 'POST',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify({
                email: email, // 邮箱
                pw: password // 密码
            })
        }).done((data) => {
            if (data.code == 200) { // 状况码为200
                swal.skip({
                    title: "登录成功"
                });
            } else {
                dsnackbar('error', data.msg);
                this.disabled = false;
                $("#email,#password").prop("disabled", false);
            }
        }).fail(() => {
            dsnackbar('error', '请稍后再试');
            this.disabled = false;
            $("#email,#password").prop("disabled", false);
        });
    });

    // ———————————————— 忘记密码 ————————————————
    $('#send_code').on("click", function () { // 点击发送验证码
        // 获取输入框中的邮箱
        var email = $('#email_1').val();

        // 检查邮箱格式
        if (!email || !diffEmail(email)) {
            return dsnackbar('warning', '请先正确填写邮箱~');
        };

        // 禁用按钮和输入框，防止多次点击
        this.disabled = true;
        $("#email_1").prop("disabled", true);

        // 发起post请求
        $.ajax("/api/code/send", {
            method: 'POST',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify({
                email: email // 邮箱
            })
        }).done((data) => {
            $("#email_1").prop("disabled", false);
            if (data.code == 403) { // 状况码为403则发送失败
                dsnackbar('warning', '请勿操之过急哦~');
                this.disabled = false;
            } else if (data.code == 200) { // 状况码为200则发送失败
                dsnackbar('success', '咻~验证码已发送！');

                // 按钮倒计时
                var c = 60; // 定义c，为剩余时间
                this.innerText = String(c);  // 更新内容

                var x = setInterval(() => { // 每秒执行一遍
                    c--; // 剩余时间-1

                    this.innerText = String(c); // 更新内容
                    this.disabled = true; // 禁用按钮

                    if (c <= 0) { // 倒计时完毕
                        this.innerText = "发送"; // 重置内容
                        this.disabled = false; // 启用按钮

                        clearInterval(x); // 退出循环
                    }
                }, 1000);
            } else {
                dsnackbar('error', '请稍后再试');
            }
        }).fail(() => {
            dsnackbar('error', '请稍后再试');
            this.disabled = false;
            $("#email_1").prop("disabled", false);
        });
    });

    $('#changeButton').on("click", function () { // 点击更改按钮
        // 获取输入框中的邮箱等信息
        var email = $('#email_1').val(); // 邮箱
        var code = $('#code').val(); // 验证码
        var password = $('#password_1').val(); // 新密码

        // 检查邮箱格式
        if (!email || !diffEmail(email)) {
            return dsnackbar('warning', '请先正确填写邮箱~');
        };

        // 禁用按钮，防止多次点击
        this.disabled = true;
        $("#email_1,#code,#password_1").prop("disabled", true);

        // 发起post请求
        $.ajax("/api/set_pw", {
            method: 'POST',
            contentType: 'application/json',
            dataType: 'json',
            data: JSON.stringify({
                email, // 邮箱
                code, // 密码
                password // 新密码
            })
        }).done((data) => {
            if (data.code != 200) { // 状况码为200
                dsnackbar('error', data.msg);
                this.disabled = false;
                $("#email_1,#code,#password_1").prop("disabled", false);
            } else {
                swal.skip({
                    title: "更换成功",
                    src: "/login",
                    to: "登录页面"
                });
            }
        }).fail(() => {
            dsnackbar('error', '请稍后再试');
            this.disabled = false;
            $("#email_1,#code,#password_1").prop("disabled", false);
        });
    });

    // ———————————————— 分页 ————————————————
    $('#forget_pw').on("click", function () { // 点击忘记密码
        $("#forget").show();
        $("#login").hide();
    });

    $('#login_button').on("click", function () { // 点击返回登录
        $("#forget").hide();
        $("#login").show();
    });
}]);